using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using Proyecto2Bases.CustomClasses.Manejadores;

namespace Proyecto2Bases.CustomClasses.Verificadores
{
    public class VerificadorDatosUsuario
    {
        /// <summary>
        /// Verifica si los datos proveidos por el usuario son válidos en la base de datos
        /// </summary>
        /// <param name="pUserName">Nombre del usuario</param>
        /// <param name="pUserPassword">Contraseña del usuario</param>
        /// <returns>True si los datos del usuario son válidos
        /// False en caso contrario(Usuario no existe o contraseña es incorrecta)</returns>
        /// <exception cref="System.Exception">Lanzada cuando hay una falla en la conexión a la base de datos</exception>

        public static int VerificarDatosLogin(String pUserName, String pUserPassword, out int pUserId, out string pNombre)
        {
            int _ProcedureResult;

            try
            {
                SqlCommand _SqlCmd = new SqlCommand();
                _SqlCmd.Connection = ManejadorDb.getInstance().getConexion();
                _SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                _SqlCmd.CommandText = "TASP_VerificarDatosUsuario";
                _SqlCmd.Parameters.AddWithValue("@UserName", pUserName);
                _SqlCmd.Parameters.AddWithValue("@UserPassword", pUserPassword);
                _SqlCmd.Parameters.AddWithValue("@UserId", -1);
                _SqlCmd.Parameters.AddWithValue("@Nombre", "");
                _SqlCmd.Parameters.AddWithValue("ValueReturned", 0);
                _SqlCmd.Parameters["@UserId"].Direction = System.Data.ParameterDirection.InputOutput;
                _SqlCmd.Parameters["@Nombre"].Size = 20;
                _SqlCmd.Parameters["@Nombre"].Direction = System.Data.ParameterDirection.Output;
                _SqlCmd.Parameters["ValueReturned"].Direction = System.Data.ParameterDirection.ReturnValue;
                _SqlCmd.ExecuteNonQuery();

                pUserId = Convert.ToInt32(_SqlCmd.Parameters["@UserId"].Value);
                pNombre = (String)_SqlCmd.Parameters["@Nombre"].Value;
                _ProcedureResult = Convert.ToInt32(_SqlCmd.Parameters["ValueReturned"].Value);

                return _ProcedureResult;

            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }        
    }
}